package com.bxait.toymail.product.entity;

import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;

import java.io.Serializable;

import com.bxait.com.valid.AddGroup;
import com.bxait.com.valid.ListValue;
import com.bxait.com.valid.UpdateGroup;
import com.bxait.com.valid.UpdateStatusGroup;
import lombok.Data;
import org.hibernate.validator.constraints.URL;

import javax.validation.constraints.*;

/**
 * 品牌
 *     增加JSR303校验
 * @author chen
 * @email 2277411582@qq.com
 * @date 2023-03-13 22:26:35
 */
@Data
@TableName("pms_brand")
public class BrandEntity implements Serializable {
	private static final long serialVersionUID = 1L;

	/**
	 * 品牌id
	 *   当更新的时候,必须指定id      @NotNull(不能为空)
	 *   当新增的时候,不需要指定id    @Null(不能有)
	 */
	@NotNull(message = "修改必须指定品牌id",groups = {UpdateGroup.class, UpdateStatusGroup.class}) // 指定更新的时候必须携带品牌的id
	@Null(message = "新增不能指定id",groups = {AddGroup.class}) // 指定新增的时候不能携带id
	@TableId
	private Long brandId;
	/**
	 * 品牌名
	 *    当更新和添加时,品牌名必须有值       @NotBlank(不能为空)
	 */
	@NotBlank(message = "品牌名必须提交",groups = {AddGroup.class,UpdateGroup.class})
	private String name;
	/**
	 * 品牌logo地址
	 *   当添加的时候和更新的时候,@URL必须有效
	 *   当添加的时候,logo地址不能为空;
	 */
	@NotBlank(groups = {AddGroup.class}) // 添加的时候URL品牌的logo地址不能为空
	@URL(message = "logo必须是一个合法的url地址",groups={AddGroup.class,UpdateGroup.class})// 当更新和添加的时候，logo地址必须是一个有效的URL值
	private String logo;
	/**
	 * 介绍
	 */
	private String descript;
	/**
	 * 显示状态[0-不显示；1-显示]
	 *     当更新和添加的时候,都不能为空 并且值必须从0，1中取
	 */
	@NotNull(groups = {AddGroup.class, UpdateStatusGroup.class})// 当添加和更新的时候显示状态必须携带
	@ListValue(vals={0,1},groups = {AddGroup.class, UpdateStatusGroup.class})// 当添加和更新的时候必须携带这个参数,并且从0,1两个值中取
	private Integer showStatus;
	/**
	 * 检索首字母
	 */
	@NotEmpty(groups={AddGroup.class})// 当添加的时候检索的首字母不能为空
	@Pattern(regexp="^[a-zA-Z]$",message = "检索首字母必须是一个字母",groups={AddGroup.class,UpdateGroup.class})
	private String firstLetter;
	/**
	 * 排序
	 */
	@NotNull(groups={AddGroup.class})// 当添加的时候排序字段不能为空
	@Min(value = 0,message = "排序必须大于等于0",groups={AddGroup.class,UpdateGroup.class})
	private Integer sort;

}
